import axios from "axios";
import { ElNotification } from "element-plus";
import { useRouter } from "vue-router";
const sjh = axios.create({
    baseURL: "http://localhost:3001",
    timeout: 60000, //超时时间--超过10秒，axios认为请求失败
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
// // 添加请求拦截器
sjh.interceptors.request.use(
    function (config) {
        // 在发送请求之前做些什么  配置token
        let token = localStorage.getItem("token");
        if (token) {
            // config["headers"]["authorization"] = token;
            config.headers.token = token;
        }
        return config;
    },
    function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 添加响应拦截器
sjh.interceptors.response.use(
    function (response) {
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        if (response.data.code == "10119") {
            let router = useRouter();
            // let userUser = useUserStore();

            // token过期--清除本地数据-让用户重新登录
            localStorage.removeItem("token");
            // userUser.token = null;
            // userUser.username = null;
            router.push("/login");
            ElMessage({
                message: response.data.message,
                type: "error",
                plain: true,
            });
        }
        return response;
    },
    function (error) {
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        if (error.code == "ERR_NETWORK") {
            ElNotification({
                title: "网络错误，请检查网络或服务器连接",
                message: "网络错误，请检查网络或服务器连接",
                type: "error",
            });
        }
        return Promise.reject(error);
    }
);

// 添加响应拦截器
/* sjh.interceptors.response.use(
    function (res) {
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        console.log(res);
        // return response.data;
    }); */
/* sjh.interceptors.response.use(
    function (response) {
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        console.log(response);
        return response.data;
    },
    function (error) {
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        return Promise.reject(error);
    }) */

export default sjh;

// axios
// 基地址
// axios.defaults.baseURL = "http://localhost:8888";
//请求头中 Authorization  ，配置token
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
//请求体的内容类型
// axios.defaults.headers.post["Content-Type"] =
//   "application/x-www-form-urlencoded";

// axios.get(url,{params:{搜索参数}});
// axios.post(url,请求体);
// axios.patch(url，请求体);
// axios.put(url，请求体);
// axios.delete(url);

// // 添加请求拦截器
// axios.interceptors.request.use(
//   function (config) {
//     // 在发送请求之前做些什么
//     return config;
//   },
//   function (error) {
//     // 对请求错误做些什么
//     return Promise.reject(error);
//   }
// );

// // 添加响应拦截器
// axios.interceptors.response.use(
//   function (response) {
//     // 2xx 范围内的状态码都会触发该函数。
//     设置token 使用
//     // 对响应数据做点什么
//     return response;
//   },
//   function (error) {
//     // 超出 2xx 范围的状态码都会触发该函数。
//     // 对响应错误做点什么
//     return Promise.reject(error);
//   }
// );
